// 等待DOM完全加载后执行所有交互逻辑
document.addEventListener('DOMContentLoaded', function() {
    // ====================== 原有功能保持不变 ======================
    // 1. 删除按钮：现在已经是表单提交，移除原来的确认对话框逻辑
    const handleDeleteConfirm = () => {
        // 这个函数现在不需要了，因为确认对话框在HTML中处理
        console.log('删除确认功能已移至HTML onclick处理');
    };

    // 2. 日期筛选框：默认填充「最近30天」和「今天」（兼容所有浏览器）
    const setDefaultDate = () => {
        const dateFrom = document.getElementById('date_from');
        const dateTo = document.getElementById('date_to');

        // 只在两个日期都为空时设置默认值
        if (!dateFrom.value && !dateTo.value) {
            const today = new Date();
            const thirtyDaysAgo = new Date();
            thirtyDaysAgo.setDate(today.getDate() - 365); // 改为1年范围，确保包含测试数据

            // 转为YYYY-MM-DD格式
            dateFrom.value = thirtyDaysAgo.toISOString().split('T')[0];
            dateTo.value = today.toISOString().split('T')[0];
        }
    };

    // 3. 筛选表单：提交前验证日期逻辑（开始日期不能晚于结束日期）
    const validateFilterForm = () => {
        const filterForm = document.getElementById('filterForm');
        if (!filterForm) return;

        filterForm.addEventListener('submit', function(e) {
            const dateFrom = document.getElementById('date_from').value;
            const dateTo = document.getElementById('date_to').value;

            // 若两个日期都存在，判断开始日期是否晚于结束日期
            if (dateFrom && dateTo && new Date(dateFrom) > new Date(dateTo)) {
                alert('开始日期不能晚于结束日期，请重新选择！');
                e.preventDefault(); // 阻止表单提交
            }
        });
    };

    // 4. 分页链接：添加点击反馈（可选，提升用户体验）
    const addPaginationFeedback = () => {
        const pageLinks = document.querySelectorAll('.pagination .page-link:not(.disabled)');
        pageLinks.forEach(link => {
            link.addEventListener('click', function() {
                this.textContent += '...'; // 加载中提示
                this.style.pointerEvents = 'none'; // 防止重复点击
            });
        });
    };

    // ====================== 新增功能：成绩数据导出 ======================
    const initExportFunction = () => {
        // 获取导出相关DOM元素
        const exportModal = new bootstrap.Modal(document.getElementById('exportModal'));
        const exportLoading = document.getElementById('exportLoading');
        const exportSuccess = document.getElementById('exportSuccess');
        const exportError = document.getElementById('exportError');
        const exportErrorMsg = document.getElementById('exportErrorMsg');
        const exportDownloadBtn = document.getElementById('exportDownloadBtn');
        const exportCloseBtn = document.getElementById('exportCloseBtn');

        /**
         * 导出成绩数据（全局函数，供按钮调用）
         * @param {string} format - 导出格式（excel/csv）
         */
        window.exportScoreData = function(format) {
            // 1. 获取当前筛选参数（排除分页参数）
            const urlParams = new URLSearchParams(window.location.search);
            urlParams.delete('page');
            const filterParams = urlParams.toString();

            // 2. 重置模态框状态并显示
            exportLoading.classList.remove('d-none');
            exportSuccess.classList.add('d-none');
            exportError.classList.add('d-none');
            exportDownloadBtn.classList.add('d-none');
            exportCloseBtn.disabled = true;
            exportModal.show();

            // 3. 发送导出请求（需与后端接口匹配）
            fetch(`/score/export/${format}/?${filterParams}`, {
                method: 'GET',
                headers: {
                    'X-Requested-With': 'XMLHttpRequest',
                    'CSRFToken': getCookie('csrftoken') // 适配Django CSRF
                },
                credentials: 'same-origin'
            })
            .then(response => {
                if (!response.ok) throw new Error(`网络错误：${response.status}`);
                return response.json();
            })
            .then(data => {
                if (data.code === 200 && data.download_url) {
                    // 导出成功：显示下载按钮
                    exportLoading.classList.add('d-none');
                    exportSuccess.classList.remove('d-none');
                    exportDownloadBtn.href = data.download_url;
                    exportDownloadBtn.classList.remove('d-none');
                } else {
                    throw new Error(data.msg || '文件生成失败');
                }
            })
            .catch(error => {
                // 导出失败：显示错误信息
                exportLoading.classList.add('d-none');
                exportError.classList.remove('d-none');
                exportErrorMsg.textContent = error.message;
            })
            .finally(() => {
                exportCloseBtn.disabled = false;
            });
        };

        /**
         * 辅助函数：获取Cookie（用于CSRF验证）
         */
        function getCookie(name) {
            let cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                const cookies = document.cookie.split(';');
                for (let i = 0; i < cookies.length; i++) {
                    const cookie = cookies[i].trim();
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    };

    // ====================== 执行所有初始化函数 ======================
    // 原有功能初始化
    handleDeleteConfirm();
    setDefaultDate();
    validateFilterForm();
    addPaginationFeedback();
    // 新增功能初始化
    initExportFunction();
});